package com.hnchances.studentscoresystem.dto.request;

import lombok.Data;

/**
 * 成绩查询请求DTO
 * 对应接口：/grades/query（有鉴权，老师权限）
 * 功能：多条件查询成绩（支持学生姓名、班级名称、课程名称、考试名称），支持分页，老师仅查本班级
 */
@Data
public class GradesQueryDTO {

    /**
     * 学生姓名（模糊查询，如“张三”）
     * 约束：可空（关联student表name字段，用于筛选指定学生成绩）
     */
    private String studentName;

    /**
     * 班级名称（模糊查询，如“计一班”）
     * 约束：可空（关联class表className字段，用于筛选指定班级成绩）
     */
    private String className;

    /**
     * 课程名称（模糊查询，如“Java基础”）
     * 约束：可空（关联course表courseName字段，用于筛选指定课程成绩）
     */
    private String courseName;

    /**
     * 考试名称（模糊查询，如“大一期中考试”）
     * 约束：可空（关联exam表examName字段，用于筛选指定考试成绩）
     */
    private String examName;

    /**
     * 班级ID（用于权限过滤，老师仅查本班级成绩）
     * 约束：非空（后端通过Token解析操作人班级ID赋值，匹配数据库class表id字段）
     */
    private Integer classID;

    /**
     * 页码（分页参数，默认1）
     * 约束：可空，若传值需为正整数（适配PageHelper分页插件）
     */
    private Integer pageNum;

    /**
     * 每页条数（分页参数，默认10）
     * 约束：可空，若传值需为正整数（适配PageHelper分页插件）
     */
    private Integer pageSize;
}